函数f(z)=z^n+c,其中c为复常数,z为复变量。采用逃逸时间算法,用Julia集画分形图,步骤有只求MATLAB编程

来源:百度知道 编辑:UC知道 时间:2024/07/02 10:06:09
基本步骤:设显示器分辨率为M*N,用K+1种颜色显示Julia集合(例如,可以取K=200),编号从0~K,0为黑色。
第一步:选定参数c=p+iq,取Xmin=Ymin=a(例如-1.5),Xmax=Ymax=b(例如1.5),取R充分大(例如100),定义发散区域V={(x,y) R^2|x^2+y^2>R^2},当轨道进入区域V时,就认为该轨道是发散的。设x0=(xmax-xmin)/(M-1),△x=(ymax-ymin)/(N-1),对所有象素点(nx,ny),(nx=0,1,…,M-1,ny=0,1,…,N-1)完成下面过程:
第二步:设x0=xmin+nx△x,y0=ymin+ny△y,k=0。
第三步:(作迭代):利用迭代方程(1)作迭代,由(xk,yk)计算(x(k+1),y(k+1)),并计数k=k+1。
第四步(作判断):计算r=x^2+y^2
(1) 若r>R,取颜色k,转到第五步;
(2) 若k=K,取颜色0,转到第五步;
(3) 若r<=R,且k<K,回到第三步;
第五步:在象素点(nx,ny)上着第k种颜色,转到下一个点,从第二步开始。
主要程序

逃逸时间算法的程序没找到,给你个别的方法编出来的程序吧,作个借鉴
c=-0.4+0.5i;
[x,y]=meshgrid(linspace(-2,2,200));
z=x+y*i;
N=zeros(size(x));
C=c*ones(size(x));
for k=1:50;
z=z.^2+C;
N(abs(z)>2)=k;
C(abs(z)>2)=0;
z(abs(z)>2)=0;
end
imshow(N,[])